﻿//Install Visual T4 for syntax highlighting!
//http://visualstudiogallery.msdn.microsoft.com/40a887aa-f3be-40ec-a85d-37044b239591



using System;

namespace Sponsorship.Domain.PersonAssociationTemplates
{
		
    public sealed class EnterPersonAssociationTemplate : ICommand
    {
        public Guid PersonAssociationTemplateId { get; private set; }
        public string AssociationName { get; private set; }
        
        public EnterPersonAssociationTemplate () {}
        public EnterPersonAssociationTemplate (Guid personAssociationTemplateId, string associationName)
        {
            PersonAssociationTemplateId = personAssociationTemplateId;
            AssociationName = associationName;
        }
    }
    
    public sealed class PersonAssociationTemplateEntered : Event
    {
        public Guid PersonAssociationTemplateId { get; private set; }
        public string AssociationName { get; private set; }
        
        public PersonAssociationTemplateEntered () {}
        public PersonAssociationTemplateEntered (Guid personAssociationTemplateId, string associationName)
        {
            PersonAssociationTemplateId = personAssociationTemplateId;
            AssociationName = associationName;
        }
    }
    
    public sealed class ChangePersonAssociationTemplate : ICommand
    {
        public Guid PersonAssociationTemplateId { get; private set; }
        public int Version { get; private set; }
        public string AssociationName { get; private set; }
        
        public ChangePersonAssociationTemplate () {}
        public ChangePersonAssociationTemplate (Guid personAssociationTemplateId, int version, string associationName)
        {
            PersonAssociationTemplateId = personAssociationTemplateId;
            Version = version;
            AssociationName = associationName;
        }
    }
    
    public sealed class PersonAssociationTemplateChanged : Event
    {
        public Guid PersonAssociationTemplateId { get; private set; }
        public string AssociationName { get; private set; }
        
        public PersonAssociationTemplateChanged () {}
        public PersonAssociationTemplateChanged (Guid personAssociationTemplateId, string associationName)
        {
            PersonAssociationTemplateId = personAssociationTemplateId;
            AssociationName = associationName;
        }
    }
    
    public sealed class DeletePersonAssociationTemplate : ICommand
    {
        public Guid PersonAssociationTemplateId { get; private set; }
        public int Version { get; private set; }
        
        public DeletePersonAssociationTemplate () {}
        public DeletePersonAssociationTemplate (Guid personAssociationTemplateId, int version)
        {
            PersonAssociationTemplateId = personAssociationTemplateId;
            Version = version;
        }
    }
    
    public sealed class PersonAssociationTemplateDeleted : Event
    {
        public Guid PersonAssociationTemplateId { get; private set; }
        
        public PersonAssociationTemplateDeleted () {}
        public PersonAssociationTemplateDeleted (Guid personAssociationTemplateId)
        {
            PersonAssociationTemplateId = personAssociationTemplateId;
        }
    }

}